package co.gov.medellin.ssti.sub.model.dao.impl;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.springframework.dao.IncorrectResultSizeDataAccessException;
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcDaoSupport;

import co.gov.medellin.ssti.sub.model.dao.ValidacionDAO;

public class ValidacionDAOImpl extends NamedParameterJdbcDaoSupport implements
		ValidacionDAO {

	@Override
	public boolean validaUsu(String usu) {
		Map<String, Object> namedParameters = new HashMap<String, Object>();

		String strSql = "SELECT nombre FROM paoyer.tcs_usuario WHERE codigo = :codigo ";
		namedParameters.put("codigo", usu);

		try {
			String str = getNamedParameterJdbcTemplate().queryForObject(strSql,
					namedParameters, String.class);
			if (str != null) {
				return true;
			}
		} catch (IncorrectResultSizeDataAccessException e) {
		}
		return false;
	}

	@Override
	public boolean validaActProg() {

		String strSql = "SELECT codigo FROM tcs_ben_programa WHERE vigencia = 'I' OR SYSDATE > HASTA_VIGENCIA";
		try {
			List<Map<String, Object>> rows = getNamedParameterJdbcTemplate()
					.getJdbcOperations().queryForList(strSql);
			if (rows != null && !rows.isEmpty()) {
				return true;
			}
		} catch (IncorrectResultSizeDataAccessException e) {
		}
		return false;
	}

	@Override
	public boolean validaActSub() {
		String strSql = "SELECT codigo FROM tcs_ben_subprograma WHERE vigencia = 'I' ";

		try {
			List<Map<String, Object>> rows = getNamedParameterJdbcTemplate()
					.getJdbcOperations().queryForList(strSql);
			if (rows != null && !rows.isEmpty()) {
				return true;
			}
		} catch (IncorrectResultSizeDataAccessException e) {
		}
		return false;
	}

	@Override
	public boolean validaSubprg(String subprog) {
		Map<String, Object> namedParameters = new HashMap<String, Object>();

		String strSql = "SELECT nombre FROM tcs_ben_subprograma WHERE UPPER(nombre) LIKE UPPER (:nombre) ";
		String strSub = subprog.trim();
		namedParameters.put("nombre", strSub);

		try {
			String nombre = getNamedParameterJdbcTemplate().queryForObject(
					strSql, namedParameters, String.class);
			if (nombre != null) {
				return true;
			}
		} catch (IncorrectResultSizeDataAccessException e) {
		}
		return false;
	}

	@Override
	public boolean validaProg(String prog) {
		Map<String, Object> namedParameters = new HashMap<String, Object>();

		String strSql = "SELECT nombre FROM tcs_ben_programa WHERE UPPER(nombre) LIKE UPPER(:nombre) ";
		String strProg = prog.trim();
		namedParameters.put("nombre", strProg);
		try {
			String nombre = getNamedParameterJdbcTemplate().queryForObject(
					strSql, namedParameters, String.class);
			if (nombre != null) {
				return true;
			}
		} catch (IncorrectResultSizeDataAccessException e) {
		}
		return false;

	}

	@Override
	public boolean validaSede(String sede) {
		Map<String, Object> namedParameters = new HashMap<String, Object>();

		String strSql = "SELECT nombre FROM tcs_ben_sede WHERE UPPER(nombre) = UPPER(:nombre) ";
		namedParameters.put("nombre", sede);

		try {
			String nombre = getNamedParameterJdbcTemplate().queryForObject(
					strSql, namedParameters, String.class);
			if (nombre != null) {
				return true;
			}
		} catch (IncorrectResultSizeDataAccessException e) {
		}
		return false;
	}

	@Override
	public boolean validaUsuAdmin(String usu) {
		Map<String, Object> namedParameters = new HashMap<String, Object>();

		String strSql = "SELECT nombre FROM paoyer.tcs_usuario WHERE nombre LIKE UPPER(:nombre) AND Fcs_Val_Vigencia(VIGENCIA,DESDE_VIGENCIA,HASTA_VIGENCIA) = 'S' ";
		namedParameters.put("nombre", usu);

		try {
			String nombre = getNamedParameterJdbcTemplate().queryForObject(
					strSql, namedParameters, String.class);
			if (nombre != null) {
				return true;
			}
		} catch (IncorrectResultSizeDataAccessException e) {
		}
		return false;
	}

}
